package com.alibaba.citrus.cr.mn.order.center.facade.adapter.dataobject.response;

import com.alibaba.fastjson.annotation.JSONType;
import com.alibaba.fastjson.serializer.SerializerFeature;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * @Description
 * @Author zhangjian
 * @Date 2024/1/22 20:54
 */
@Data
@JSONType(serialzeFeatures = SerializerFeature.WriteMapNullValue)
public class FulfillmentOrderDetailResDTO implements Serializable {

    /**
     * 来源系统编码
     */
    private String fromSys;

    /**
     * 业态编码
     */
    private String businessType;

    /**
     * 履约单号
     */
    private String fulfillmentOrderNo;

    /**
     * 来源单号
     */
    private String sourceOrderNo;

    /**
     * 外部单号
     */
    private String outOrderNo;

    /**
     * 业务单元编码
     */
    private String businessUnitCode;

    /**
     * 履约类型
     */
    private Integer fulfillmentType;

    /**
     * 业务单据类型
     */
    private String refOrderType;

    /**
     * 发货仓编码（逻辑仓）
     */
    private String logicShippingWarehouseCode;

    /**
     * 发货仓名称（逻辑仓）
     */
    private String logicShippingWarehouse;

    /**
     * 发货物理仓编码（发货仓库）
     */
    private String shippingWarehouseCode;

    /**
     * 发货物理仓名称（发货仓库）
     */
    private String shippingWarehouse;

    /**
     * 产品组编码
     */
    private String productGroupCode;

    /**
     * 业务渠道编码
     */
    private String channelCode;

    /**
     * 销售组织编码
     */
    private String salesOrganizationCode;

    /**
     * 客户售达方编码
     */
    private String soldToPartyCode;

    /**
     * 客户送达方编码
     */
    private String shipToPartyCode;

    /**
     * 客户送达方名称
     */
    private String shipToParty;

    /**
     * 收货仓编码
     */
    private String logicReceivingWarehouseCode;

    /**
     * 收货仓名称
     */
    private String logicReceivingWarehouse;

    /**
     * 收货物理仓编码
     */
    private String receivingWarehouseCode;

    /**
     * 收货物理仓名称
     */
    private String receivingWarehouse;

    /**
     * 收货人姓名
     */
    private String receiverName;

    /**
     * 收货人省
     */
    private String receiverProvince;

    /**
     * 收货人市
     */
    private String receiverCity;

    /**
     * 收货人区
     */
    private String receiverArea;

    /**
     * 收货人详细地址
     */
    private String receiverAddress;

    /**
     * 收货人电话
     */
    private String receiverPhone;

    /**
     * 状态
     */
    private String mainStatus;

    /**
     * 创建人
     */
    private String creator;

    /**
     * 创建时间
     */
    private String gmtCreate;

    /**
     * 修改人
     */
    private String updater;

    /**
     * 修改时间
     */
    private String gmtModified;

    /**
     * 期望交货时间
     */
    private String expectedDeliveryTime;

    /**
     * 交货完成时间
     */
    private String deliveryCompletedTime;

    /**
     * 履约优先级
     */
    private String priority;

    /**
     * 配送方式编码
     */
    private String shippingMethodCode;

    /**
     * 配送方式名称
     */
    private String shippingMethod;

    /**
     * 备注
     */
    private String remark;

    /**
     * 扩展字段
     */
    private String features;

    /**
     * 逻辑删除行状态，1:有效，-1:删除
     */
    private Integer rowStatus;

    /**
     * 下传状态, 0： 未下传，1：下传中，2：下传成功 ， 3： 下传失败
     */
    private Integer passStatus;

//    /**
//     * 租户id
//     */
//    private String tenantId;

    /**
     * 履约单方向类型，
     */
    private Integer fulfillmentDirectionType;



    // 以下为逆向履约单字段

    /**
     * 预计到货时间
     */
    private String expectedArrivalTime;

    /**
     * 装运单号
     */
    private String shipOrderNo;

    /**
     * 集装箱号/车皮号
     */
    private String containerNo;

    /**
     * 发运方式
     */
    private String transportationMethod;
    /**
     * 司机电话
     */
    private String diverMobile;


    // 子单

    /**
     * 履约单行号
     */
    private Integer lineNumber;

    /**
     * 业务单据主单号
     */
    private String refOrderNo;

    /**
     * 业务单据行号
     */
    private String refOrderLineNo;

    /**
     * 业务单据创建时间
     */
    private String refOrderCreateTime;

    /**
     * 物料编码
     */
    private String materialCode;

    /**
     * 货品名称
     */
    private String productName;

    /**
     * 生产日期
     */
    private String productionDate;

    /**
     * 销售单位编码
     */
    private String salesUnitCode;

    /**
     * 销售单位名称
     */
    private String salesUnit;

    /**
     * 销售数量
     */
    private BigDecimal saleQuantity;

    /**
     * 发货单位编码
     */
    private String shippingUnitCode;

    /**
     * 发货单位名称
     */
    private String shippingUnit;

    /**
     * 数量
     */
    private BigDecimal quantity;

    /**
     * 待出库数量
     */
    private BigDecimal readyToShipQuantity;

    /**
     * 已出库数量
     */
    private BigDecimal shippedQuantity;

    /**
     * 行备注
     */
    private String detailRemark;

    /**
     * 履约明细状态
     */
    private String detailStatus;

    /**
     * 是否关闭
     */
    private Integer close;

    /**
     * 关闭原因代码
     */
    private String closeReasonCode;

    /**
     * 关闭原因描述
     */
    private String closeReason;


// 以下为逆向履约单字段

    /**
     * 批次号
     */
    private String batchNo;

    /**
     * 子单扩展字段
     */
    private String detailFeatures;


    /**
     * 产品组名称
     */
    private String productGroupName;

    /**
     * 业务渠道名称
     */
    private String channelName;

    /**
     * 销售组织名称
     */
    private String salesOrganizationName;

    /**
     * 客户售达方名称
     */
    private String soldToPartyName;
}
